package com.example.hockdemo;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;

import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class LoginHock {
    public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {

        // 将包名不是 com.example.myapplication 的应用剔除掉,可以减少管理的类
        if (!lpparam.packageName.equals("com.example.myapplication"))
            return;
        XposedBridge.log("当前APP应用程序是: " + lpparam.packageName);

        //第一个参数是className，表示被注入的方法所在的类
        //第二个参数是类加载器，照抄就行
        //第三个参数是被注入的方法名
        //第四五个参数是第三个参数的两个形参的类型
        //最后一个参数是匿名内部类
        findAndHookMethod("com.example.myapplication.MainActivity", lpparam.classLoader, "check", String.class,
                String.class, new XC_MethodHook() {

                    /**
                     * 该方法在check方法调用之前被调用，输出一些日志，并且捕获参数的值。
                     * 最后两行的目的是改变参数的值。也就是说无论参数是什么值，都会被替换为name为Orangey,pass为123456
                     * @param param
                     * @throws Throwable
                     */
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        XposedBridge.log("同学，你正在被人开始劫持");
                        XposedBridge.log("参数1 = " + param.args[0]);
                        XposedBridge.log("参数2 = " + param.args[1]);
                        param.args[0] = "Orangey";
                        param.args[1] = "123456";
                    }

                    /**
                     * 该方法在check方法调用之后被调用
                     * @param param
                     * @throws Throwable
                     */

                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        XposedBridge.log("哦吼，同学劫持已结束");
                        XposedBridge.log("参数1 = " + param.args[0]);
                        XposedBridge.log("参数2 = " + param.args[1]);

                    }
                });
    }
}
